public class Student1 {
    private String name;
    private int age;

    //如果多个学生在同一个班级，就直接把班级定义在方法区
    public static String classes = "106java";

    {
        System.out.println("实例代码块");
    }

    static {
        //类加载的时候会被执行，跟前后顺序无关
        System.out.println("第一个静态代码块");
    }

    static {
        System.out.println("第二个静态代码块");
    }

    public Student1(){
        System.out.println("无参构造方法");
    }
    public Student1(String name,int age){
        System.out.println("调用两个参数的构造方法");
        this.name=name;
        this.age=age;
    }

    public void print(){
        System.out.println(this.name+" => "+this.age+" => "+classes);
    }
    public static void main1(String[] args) {
        Student1 student1 = new Student1("张三1",12);
        Student1 student2 = new Student1("张三2",13);
        Student1 student3 = new Student1("张三3",14);
        /*静态成员变量特性
        1，不属于某个具体的对象，是类的属性，所有对象共享，不存在某个对象的空间中
        2，既可以通过对象访问，也可以直接类名访问，一般建议通过类名访问
        3，类变量储存在方法区中
        4，生命周期伴随一生，随类的加载而创建，随类的销毁而销毁
         */
        Student1.classes="106java";//可以在外面定义，需要通过类名.访问

        student1.print();
        student2.print();
        student3.print();
    }

    //代码块 -- 静态代码块，实例代码块，局部代码块，匿名代码块，普通代码块
    public static void main(String[] args) {
        Student1 student1 =new Student1();
        System.out.println("===========");
        //静态的只会被执行一次
        Student1 student2 = new Student1();
        Student1.classes = "106java";
    }
}
